Some embodiments described herein relate generally to forwarding network traffic in data centers, and, in particular, to methods and apparatus for classifying data packets into queuing classes based on the duration of a data flow in a data center.
In some instances, separate networks are built to deliver traffic for separate applications. For example, many high performance computing applications or high frequency trading systems use dedicated low latency networks. This approach of separate networks, however, is costly when the demand for separate networks increases. Alternatively, some known data centers have multiple network interfaces each dedicated to a different type of data flow (e.g., bulk data transfers, storage access, control communication traffic). Such an approach, however, is typically unpractical or uneconomic in a data center that has to deploy server virtualization at a large scale. Some other known data centers classify traffic flows into different traffic classes such that traffic for these classes can be buffered independently at the data centers. Classifying traffic flows into different traffic classes, however, does not guarantee the desired requirement of each flow is met because either the behavior of a data flow (e.g., duration) may be unknown or unavailable to the data center when the data flow is classified upon entering the data center, or a single application may produce multiple different types of data flows that have differing latency and throughput requirements. Also, information on the class of service requirement for a given data flow (e.g., latency requirement) may not be included in the packets (e.g., in a packet header) of the data flow.
Accordingly, a need exists for methods and apparatus that can forward data flows of different applications and meet the desired requirement(s) associated with each given flow without introducing unnecessary complications.